#!/usr/bin/env python
# -*-coding:UTF-8 -*-
'''
@Project ：爬虫-波波老师
@File：26-异步的方法-线程池.py
@Author ：文非
@Date：2021/3/1415:19
@Require： 在爬虫中使用异步的方式来高性能的实现数据爬取操作
'''

# import time
# # 使用单线程同步串行的方式执行
#
# def get_page(str):
#     print("正在下载:", str)
#     time.sleep(2)
#     print("下载成功：", str)
#
# name_list = ["aa","bb",'cc',"dd"]
# start_time = time.time()
#
# for i in range(len(name_list)):
#     get_page(name_list[i])
#
# end_time = time.time()
#
# print("%d second"%(end_time-start_time))


import time

# 导入线程池模块对应的Pool类
from multiprocessing.dummy import Pool

# 使用线程池异步的方式执行

name_list = ["aa","bb",'cc',"dd"]
start_time = time.time()
def get_page(str):
    print("正在下载:", str)
    time.sleep(2)
    print("下载成功：", str)

# 实例化一个线程池对象
pool = Pool(4) #4的意思是线程池里面可以容纳四个线程
pool.map(get_page, name_list)  # 将可迭代对象 name——list里面的每一个元素传递给getpage这个方法进行处理
# map方法的返回值一定是一个列表
end_time = time.time()
print("%f second"%(end_time-start_time))